package hotel;

import java.awt.*;
import java.awt.event.*;
import java.io.*;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.Arrays;

import javax.swing.*;

import com.sun.rowset.CachedRowSetImpl;

public class GestHotel extends JFrame implements ActionListener, KeyListener {
	ImageIcon iconax = new ImageIcon("Risorse/iconax.png");
	private Database d;
	private static JFrame finestrella;
	private JLabel testoNomeHotel;
	private JLabel testoNumCamere;
	private JTextField insNomeHotel;
	private JTextField insNumCamere;
	private JPanel pannelloFinestrella;
	private JButton ok, avanti;
	private JLabel benvenuto;
	private String welcome = "Benvenuti! Questo software e' un progetto ideato e realizzato completamente"
			+ " da Mario Monaco ed Antonio Mungari.";
	private JFrame finestraBenvenuto;
	private JPanel panel;
	private JTextField password;
	public String username;

	public GestHotel(final Database d, String string)
			throws ClassNotFoundException, SQLException, IOException {
		Image immagineIc = Toolkit.getDefaultToolkit().getImage(
				"Risorse/hotel.png");
		this.d = d;
		this.username = string;
		if (installato()) {
			GraficaHotel g = new GraficaHotel(d, username);
			g.setVisible(true);
		} else {
			finestraBenvenuto = new JFrame();
			finestraBenvenuto
					.setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE);
			finestraBenvenuto.addWindowListener(new WindowAdapter() {
				public void windowClosing(WindowEvent e) {
					d.chiudiSocket();
					System.exit(0);
				}
			});
			finestraBenvenuto.setTitle("Benvenuti!");
			finestraBenvenuto.setSize(300, 300);
			finestraBenvenuto.setLocation(270, 150);
			finestraBenvenuto.setLayout(new BorderLayout());
			benvenuto = new JLabel(welcome);
			benvenuto.setForeground(Color.BLACK);
			benvenuto.setFont(Font.getFont(Font.SERIF));
			avanti = new JButton("Continua con l'installazione");
			avanti.addActionListener(this);
			panel = new JPanel(new BorderLayout());
			ImageIcon immagine = new ImageIcon("Risorse/benvenuti-lingue.jpg");
			JLabel sfondo = new JLabel(immagine);
			panel.setBackground(Color.WHITE);
			panel.add(sfondo, BorderLayout.NORTH);
			panel.add(benvenuto, BorderLayout.CENTER);
			panel.add(avanti, BorderLayout.SOUTH);
			finestraBenvenuto.add(panel);
			finestraBenvenuto.setVisible(true);
			finestraBenvenuto.pack();
			finestraBenvenuto.setResizable(false);
		}
	}

	private void creaFinestrella() {
		finestrella = new JFrame("Crea nuova gestione");
		finestraBenvenuto.setFocusableWindowState(false);
		finestraBenvenuto.setEnabled(false);
		finestrella.setLayout(new BorderLayout());
		finestrella.setLocation(250, 200);
		finestrella.addWindowListener(new WindowAdapter() {
			public void windowClosing(WindowEvent e) {
				GestHotel.finestrella.dispose();
				GestHotel.this.finestraBenvenuto.setFocusableWindowState(true);
				GestHotel.this.finestraBenvenuto.setEnabled(true);
			}
		});
		ok = new JButton("OK");
		ok.addActionListener(this);
		ok.addKeyListener(this);
		pannelloFinestrella = new JPanel();
		finestrella.add(pannelloFinestrella, BorderLayout.CENTER);
		testoNomeHotel = new JLabel("Nome hotel:");
		testoNumCamere = new JLabel("Numero camere:");
		insNomeHotel = new JTextField(10);
		insNomeHotel.addKeyListener(this);
		insNumCamere = new JTextField(10);
		insNumCamere.addKeyListener(this);
		pannelloFinestrella.add(testoNomeHotel);
		pannelloFinestrella.add(insNomeHotel);
		pannelloFinestrella.add(testoNumCamere);
		pannelloFinestrella.add(insNumCamere);
		pannelloFinestrella.add(ok);
		finestrella.setVisible(true);
		finestrella.setAlwaysOnTop(true);
		finestrella.pack();
		finestrella.setResizable(false);

	}

	@Override
	public void keyTyped(KeyEvent e) {
		// Auto-generated method stub

	}

	@Override
	public void keyPressed(KeyEvent e) {
		if (e.getKeyCode() == KeyEvent.VK_ENTER) {
			if (insNomeHotel.getText().compareTo("") == 0
					|| insNumCamere.getText().compareTo("") == 0
					|| !insNumCamere.getText().matches("[0-9]*")) {
				JOptionPane.showMessageDialog(null,
						"Devi completare entrambi i campi correttamente!",
						"Errore", JOptionPane.ERROR_MESSAGE, iconax);
			} else
				try {
					d.queryInserimento("UPDATE accesso.dati SET hotel='"
							+ insNomeHotel.getText() + "' WHERE username='"+username+"'");
					finestraBenvenuto.dispose();
					finestrella.dispose();
					SettaStanze s = new SettaStanze(d, username,
							Integer.valueOf(insNumCamere.getText()));
				} catch (Exception exc) {
				}
		}
	}

	@Override
	public void keyReleased(KeyEvent e) {
		// Auto-generated method stub

	}

	@Override
	public void actionPerformed(ActionEvent e) {
		if (e.getSource() == ok) {
			if (insNomeHotel.getText().compareTo("") == 0
					|| insNumCamere.getText().compareTo("") == 0
					|| !insNumCamere.getText().matches("[0-9]*")) {
				JOptionPane.showMessageDialog(null,
						"Devi completare entrambi i campi correttamente!",
						"Errore", JOptionPane.ERROR_MESSAGE, iconax);
			} else {
				d.queryInserimento("UPDATE accesso.dati SET hotel='"
						+ insNomeHotel.getText() + "' WHERE username='"+username+"'");
				finestraBenvenuto.dispose();
				finestrella.dispose();
				SettaStanze s = new SettaStanze(d, username,
						Integer.valueOf(insNumCamere.getText()));
			}
		} else if (e.getSource() == avanti) {
			creaFinestrella();
		}
	}

	public boolean installato() throws ClassNotFoundException, SQLException {
		MyResultSet rs = null;
		rs = d.querySelect("select installato from accesso.dati where username='"
				+ username + "'");
		if (rs.next()) {
			if (rs.getInt(1) == 0)
				return false;
		}
		return true;
	}

}
